import axios from 'axios'

import serverConfig from './config'

// 创建axios请求实例
const serviceAxios = axios.create({
  baseURL: serverConfig.baseURL, // 基础请求地址
  timeout: 10000, // 请求超时设置
  withCredentials: false // 跨域请求是否需要携带 cookie
})

// 创建请求拦截
serviceAxios.interceptors.request.use(
  (config) => {
    // 如果开启 token 认证
    if (serverConfig.useTokenAuthorization) {
      config.headers['Authorization'] = 'token' // 请求头携带 token
    }
    // 设置请求头
    if (!config.headers['content-type']) {
      // 如果没有设置请求头
      if (config.method == 'post') {
        config.headers['content-type'] = 'application/json' // post 请求
        config.data = JSON.stringify(config.data)
      } else {
        config.headers['content-type'] = 'application/json' // 默认类型
      }
    }
    // console.log("请求配置", config);
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 创建响应拦截
serviceAxios.interceptors.response.use(
  (res) => {
    let data = res.data
    // 代码块
    return data
  },
  (error) => {
    // 错误抛出
    return Promise.reject(error)
    // 这边可以做一些全局的错误处理，比如提示错误等等
  }
)

export default serviceAxios
